13: 参数及其返回值
作者:Thau!

尽管无参数的函数在减少写源码工作量,HTML源码可读
性上很有用,但有参数的函数会更为有用。

上一例中,当返回的分、秒值小于10时会有问题发生。
我们想要看到的秒值是
04而非4。我们可以这样做:

 


var the_minute = the_date.getMinutes();

if (the_minute < 10) 

{

	the_minute = "0" + the_minute;

}



var the_second = the_date.getSeconds();

if (the_second < 10)

{

	the_second = "0" + the_second;

}

它会非常有效。但是注意,同样的源码你写了两次:若
某件东西小于
10则前面加“0”。所以要考虑当用同一
代码要多次重写时,用函数来做。本例中我写了一个叫

fixNumber的函数:


function fixNumber(the_number)

{

	if (the_number < 10)

	{

		the_number = "0" + the_number;

	}

	return the_number;

}
fixNumber的参数是the_number。一个参数也是一
个变量,当该函数被调用时,其参数值也被设置。
在本例中,我们这样调用函数:

var fixed_variable = fixNumber(4);
参数the_number在函数中设置为4。到现在你应该
fixNumber的主体有了一定的了解。它的意思
是:如果变量
the_number小于10,则在它的前面加
一个
0。这里面新的内容是return指令:返回
the_number的值。在下面的情况中就会用到return
指令:

var some_variable = someFunction();
变量some_variable的值是函数someFunction()
返回值。在
fixNumber中,我加入: return
the_number,则退出函数并将返回the_number的值
返回给任何一个等待被设置的变量。所以,我这样
书写代码:
var fixed_variable = fixNumber(4);
the_number的初始值将通过函数调用被设置为4,然
后由于
4小于10,所以the_number将被改为"04"
然后
the_number值被返回,而且变量
fixed_variable将被设置为"04"

为了将fixNumber包括在原始函数announceTime()
中,我添加了如下内容:

function announceTime()

{

	//get the date, the hour, minutes, and seconds

	var the_date = new Date();



	var the_hour = the_date.getHours();

	var the_minute = the_date.getMinutes();

	var fixed_minute = fixNumber(the_minute);

	var the_second = the_date.getSeconds();

	var fixed_second = fixNumber(the_second);


	//put together the string and alert with it

	var the_time = the_hour + ":" + fixed_minute + ":" + fixed_second;

	alert("The time is now: " +the_time);

}	
假定时间链接被点击时,时间为12:04:05。用new
Date()
获得日期,用getHours()获得小时,用前面
所属方法获得分钟,分钟在本例中应该是
4, 然后
调用
fixNumber,其参数为the_minute:

var fixed_minute = fixNumber(the_minute);
fixNumber()被调用时,参数the_number被设置
the_minute。在本例中由于the_minute4,所
the_number将被设置为4。设置完参数后,我们
进入函数主体。由于
4小于10the_number被改变
"04",然后the_number值用return指令返回。当
"04" fixNumber返回后,本例fixed_minute
等于
"04"

我们一步一步来研究该过程。假定时间为
12:04:05

我们从函数announceTime()开始

  1. the_minute = the_date.getMinutes();
    the_minute = 4
  2. fixed_minute = fixNumber(the_minute);
    等于函数fixNumber()并将其值返回给
    fixed_minute
  3. 现在进入函数fixNumber()

  4. 函数fixNumber(the_number)
    fixNumber()the_minute的值调用,
    the_minute值是4,所以现在the_number = 4
  5. 如果(the_number < 10) {the_number = "0"
    + the_number;}

    由于
    4小于10,所以the_number现在等于"04"
  6. 返回the_number
    退出该函数并返回值
    "04"
  7. 现在已经退出函数fixTime(),所以现在我
    们回到
    announceTime()

  8. 该函数返回值为"04",所以fixed_minute
    在等于
    "04"

该例用了一个只有一个参数的函数。实际上
你可以为函数设置多个参数。例如该函数输
入两个数组并返回一个元素列表

1: 第四课介绍
2: 循环介绍
3: 循环的密码
4: 再谈WHILE循环
5: For 循环
6: 嵌套循环
7: 循环练习
8: 数组
9: 数组和循环
10:文件目标模块中的数组
11: 函数
12: 无参数函数
13: 参数及返回值
14: 多于一个参数的函数